--- dlls/ntdll/loader-old.c	2007-09-29 23:09:23.000000000 +0200
+++ dlls/ntdll/loader.c	2007-09-29 23:16:19.000000000 +0200
@@ -693,7 +693,9 @@
     else p = wm->ldr.FullDllName.Buffer;
     RtlInitUnicodeString( &wm->ldr.BaseDllName, p );
 
-    if (nt->FileHeader.Characteristics & IMAGE_FILE_DLL)
+    /* do not setup entry point if kernel driver */
+    if( !(nt->OptionalHeader.Subsystem & IMAGE_SUBSYSTEM_NATIVE) &&
+         (nt->FileHeader.Characteristics & IMAGE_FILE_DLL))
     {
         wm->ldr.Flags |= LDR_IMAGE_IS_DLL;
         if (nt->OptionalHeader.AddressOfEntryPoint)
